
#include "Singleton.h"
#include <cstdio>

int main(int argc, char* argv[])
{
  // v1
  Singleton* v1 = Singleton::get_instance_v1();
  Singleton* ov1 = Singleton::get_instance_v1();
  printf("v1: %p; ov1: %p; v1 == ov1 ? %s\n", ov1, ov1, (v1 == ov1 ? "true" : "false"));

  // v2
  Sp_Singleton v2 = Singleton::get_instance_v2();
  Sp_Singleton ov2 = Singleton::get_instance_v2();
  printf("v2: %p; ov2: %p; v2 == ov2 ? %s\n", v2.get(), ov2.get(), (v2.get() == ov2.get() ? "true" : "false"));

  // v3
  Singleton* v3 = Singleton::get_instance_v3();
  Singleton* ov3 = Singleton::get_instance_v3();
  printf("v3: %p; ov3: %p; v3 == ov3 ? %s\n", v3, ov3, (v3 == ov3 ? "true" : "false"));

  // v4
  Singleton* v4 = Singleton::get_instance_v4();
  Singleton* ov4 = Singleton::get_instance_v4();
  printf("v4: %p; ov4: %p; v4 == ov4 ? %s\n", v4, ov4, (v4 == ov4 ? "true" : "false"));

  delete v1;
  delete v3;
  return 0;
}
